package 简单.模拟;

/**
 * 给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。
 * 你需要从左到右遍历 nums 数组，并将 startValue 依次累加上 nums 数组中的值。
 * 请你在确保累加和始终大于等于 1 的前提下，选出一个最小的 正数 作为 startValue 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/minimum-value-to-get-positive-step-by-step-sum
 */
public class 逐步求和得到正数的最小值_1413 {

    public static void main(String[] args) {

    }

    /**
     * 求和的过程中
     * sum如果 < 0 , 那么最小为 -sum+1
     *
     * @param nums
     * @return
     */
    public int minStartValue(int[] nums) {
        int ans = 1, sum = 0;
        for (int num : nums) {
            sum += num;
            if (sum < 0) {
                ans = Math.max(ans, Math.abs(sum) + 1);
            }
        }
        return ans;
    }

}
